package cn.yinyu.queue.module.ecg.service.room;

import java.util.*;
import javax.validation.Valid;
import cn.yinyu.queue.framework.common.pojo.PageResult;
import cn.yinyu.queue.module.ecg.controller.admin.room.vo.MonitorInfoVO;
import cn.yinyu.queue.module.ecg.controller.admin.room.vo.RoomPageReqVO;
import cn.yinyu.queue.module.ecg.controller.admin.room.vo.RoomSaveReqVO;
import cn.yinyu.queue.module.ecg.dal.dataobject.room.RoomDO;
import cn.yinyu.queue.module.ecg.dal.dataobject.room.RoomStatisticsDO;


/**
 * 诊室和诊疗床 Service 接口
 *
 * @author 垠域源码
 */
public interface RoomService {

    /**
     * 创建诊室和诊疗床
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createRoom(@Valid RoomSaveReqVO createReqVO);

    /**
     * 更新诊室和诊疗床
     *
     * @param updateReqVO 更新信息
     */
    void updateRoom(@Valid RoomSaveReqVO updateReqVO);

    /**
     * 删除诊室和诊疗床
     *
     * @param id 编号
     */
    void deleteRoom(Integer id);

    /**
     * 获得诊室和诊疗床
     *
     * @param id 编号
     * @return 诊室和诊疗床
     */
    RoomDO getRoom(Integer id);

    RoomDO getRoomByIP(String ip);

    /**
     * 获得诊室和诊疗床分页
     *
     * @param pageReqVO 分页查询
     * @return 诊室和诊疗床分页
     */
    PageResult<RoomDO> getRoomPage(RoomPageReqVO pageReqVO);

    List<RoomStatisticsDO> roomStatistics();

    List<RoomDO> simpleRoomList();

    void resetRoom(Boolean needCloseBed);

    MonitorInfoVO getMonitorInfo();

}